home *** CD-ROM | disk | FTP | other *** search
/ Informática Multimedia 1995 April / Informatica Multimedia CD - Epimundo.iso / DOS / FILECOPY / DATEDEL.ZIP / DATEDEL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1988-07-07  |  2.8 KB  |  114 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. #include <conio.h>
  6. #include <dos.h>
  7.  
  8. static int month_arr [13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
  9.  
  10. struct TIMEDATE {
  11.                 int year, month, day;
  12.                 };
  13.  
  14. int valid_date(struct TIMEDATE chkdate);
  15. int main(int argc, char *argv[]);
  16. unsigned getdate(char *hdr);
  17.  
  18. int valid_date(chkdate)
  19. struct TIMEDATE chkdate;
  20. {
  21.      if (!(chkdate.year % 4))
  22.          month_arr[2] = 29;
  23.  
  24.  
  25.      if (chkdate.month < 1 || chkdate.month > 12)
  26.         return(1);
  27.      else
  28.         if (chkdate.day < 1 || chkdate.day > month_arr[chkdate.month])
  29.            return(1);
  30.  
  31.      return(0);
  32. }
  33.  
  34. unsigned getdate(hdr)
  35. char *hdr;
  36. {
  37.    int dateinv = 1;
  38.    char datestr[12], *tempfld;
  39.    struct TIMEDATE wkdate;
  40.  
  41.     while (dateinv)
  42.         {
  43.         printf("Enter date to delete %s (MM/DD/YY): ",hdr);
  44.         gets(datestr);
  45.         tempfld = strtok(datestr,"/");
  46.         wkdate.month = atoi(tempfld);
  47.         tempfld = strtok(NULL,"/");
  48.         wkdate.day = atoi(tempfld);
  49.         tempfld = strtok(NULL,"/");
  50.         wkdate.year = atoi(tempfld);
  51.         if (wkdate.year < 1980)
  52.            wkdate.year += 1900;
  53.         dateinv = valid_date(wkdate);
  54.         if (dateinv)
  55.            printf("\a");
  56.         }
  57.         return(wkdate.day + (wkdate.month << 5) +
  58.               ((wkdate.year - 1980) << 9));
  59.  
  60. }
  61.  
  62. main(argc, argv)
  63.     int argc;
  64.     char *argv[];
  65. {
  66.     unsigned datefrom_num, dateto_num;
  67.  
  68.     char *srchfor = "*.*",
  69.     ch;
  70.     struct find_t fileinfo;
  71.     int  filechk, del_fail;
  72.  
  73.     printf("(C)1986 Michael Roberts - NOTE: Dates entered are inclusive to deletion!\n");
  74.     if (argc == 2)
  75.        srchfor = argv[1];
  76.     printf("\nDelete files matching - %s? ", srchfor);
  77.  
  78.     do ch = (char)getch();
  79.     while (strchr("YyNn", ch) == NULL);
  80.  
  81.     if (ch == 'Y' || ch == 'y')
  82.         {
  83.         puts("YES");
  84.         do
  85.            {
  86.            datefrom_num = getdate("FROM");
  87.            dateto_num = getdate("TO");
  88.  
  89.            if (datefrom_num > dateto_num)
  90.               printf("\n\aFrom Date is greater than To date - Re-enter\n");
  91.            } while (datefrom_num > dateto_num);
  92.  
  93.         filechk = _dos_findfirst(srchfor, _A_NORMAL, &fileinfo);
  94.  
  95.         while(!filechk)
  96.            {
  97.            if ((fileinfo.wr_date >= datefrom_num) &&
  98.                (fileinfo.wr_date <= dateto_num))
  99.                  {
  100.                  del_fail = unlink(fileinfo.name);
  101.                  if (!del_fail)
  102.                     printf("Deleted %s \n",fileinfo.name);
  103.                  else
  104.                     printf("Could not delete %s \n", fileinfo.name);
  105.                  }
  106.            filechk = _dos_findnext(&fileinfo);
  107.            }
  108.         }
  109.         else
  110.            puts("NO");
  111.  
  112.         return(0);
  113. }
  114.